/*
 ------------------------------------------------------------------------------
 Copyright (C) 2006-2007 Team Blur.

 This file is part of the Quantum Engine source code.

 The Quantum Engine source code is free software; you can redistribute it and/or
 modify it under the terms of the GNU General Public License as published by
 the Free Software Foundation; either version 2 of the License, or (at your
 option) any later version.

 The Quantum Engine source code is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
 or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
 more details.

 You should have received a copy of the GNU General Public License along with
 the Quantum Engine source code; if not, write to the Free Software Foundation, Inc.,
 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 ------------------------------------------------------------------------------
*/


#ifndef __ED_PUBLIC_H__
#define __ED_PUBLIC_H__


// Launches an integrated editor.
// Note that only one editor can be active at a time.
bool			ED_LaunchEditor (editor_t editor, bool (*mouseEvent)(void), void (*refresh)(void));

// Closes the currently active integrated editor
void			ED_CloseEditor (void);

// Called by the client system for mouse left-button down events.
// Will perform a callback to let the active editor select an entity for
// editing. The callback function should return true if it wants the client
// system to skip generating game commands for said event.
bool			ED_MouseEvent (void);

// Called by the renderer every frame after drawing the primary view.
// Will perform a callback to let the active editor draw all editable entities.
void			ED_Refresh (void);

// Draws a box representing an editable entity
void			ED_DrawEditBox (const odVec3 &color, const odVec3 corners[8]);

/*
 ==============================================================================

 LIGHT EDITOR

 ==============================================================================
*/

// Sets the callback functions for the light editor
void			ED_SetLightCallbacks (lightCallbacks_t *callbacks);

// Edits the given light properties
void			ED_EditLightProperties (int index, lightProperties_t *properties);

/*
 ==============================================================================

 REVERB EDITOR

 ==============================================================================
*/

// Sets the callback functions for the reverb editor
void			ED_SetReverbCallbacks (reverbCallbacks_t *callbacks);

// Edits the given reverb properties
void			ED_EditReverbProperties (int index, reverbProperties_t *properties);


#endif	// __ED_PUBLIC_H__
